-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add synchronous execution option to workflow provisioning #990
Add synchronous execution option to workflow provisioning #990
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally looks good.
- You need to handle -1 time value; my recommendation is you use that for the default "async" rather than null
- You need to do stream version checks for the new (optional) workflow state in the response, and the new timeout parameter in the workflow request (unless you want to just keep it in the params map).
src/main/java/org/opensearch/flowframework/rest/RestCreateWorkflowAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
src/test/java/org/opensearch/flowframework/rest/RestCreateWorkflowActionTests.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/ProvisionWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]> # Conflicts: # src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]> # Conflicts: # src/test/java/org/opensearch/flowframework/workflow/DeleteConnectorStepTests.java
Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
d6c0c53
to
18a1dbb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with a few suggestions.
src/main/java/org/opensearch/flowframework/rest/RestCreateWorkflowAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/util/WorkflowTimeoutUtility.java
Show resolved
Hide resolved
…, update error message Signed-off-by: Junwei Dai <[email protected]>
Signed-off-by: Junwei Dai <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good to me, great work implementing this feature @junweid62 . A few comments
src/main/java/org/opensearch/flowframework/transport/CreateWorkflowTransportAction.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowRequest.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
src/main/java/org/opensearch/flowframework/transport/WorkflowResponse.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Junwei Dai <[email protected]>
The backport to
To backport manually, run these commands in your terminal: # Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/flow-framework/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/flow-framework/backport-2.x
# Create a new branch
git switch --create backport/backport-990-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 33579a35a9d7a72cc0a2d44561b98bd64a79dd04
# Push it to GitHub
git push --set-upstream origin backport/backport-990-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/flow-framework/backport-2.x Then, create a pull request where the |
@junweid62 can you please manually backport this? |
…-project#990) * Add synchronous execution option to workflow provisioning Signed-off-by: Junwei Dai <[email protected]> * code refactor Signed-off-by: Junwei Dai <[email protected]> * add change log Signed-off-by: Junwei Dai <[email protected]> * refactor code based on comment Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to non-negative Signed-off-by: Junwei Dai <[email protected]> * Add synchronous execution to reprovision Signed-off-by: Junwei Dai <[email protected]> * remove unsued common value Signed-off-by: Junwei Dai <[email protected]> * add reprovision sync execution Signed-off-by: Junwei Dai <[email protected]> * fix test for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * fix test name for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * addressed some comments Signed-off-by: Junwei Dai <[email protected]> --------- Signed-off-by: Junwei Dai <[email protected]> Co-authored-by: Junwei Dai <[email protected]> (cherry picked from commit 33579a3)
…-project#990) * Add synchronous execution option to workflow provisioning Signed-off-by: Junwei Dai <[email protected]> * code refactor Signed-off-by: Junwei Dai <[email protected]> * add change log Signed-off-by: Junwei Dai <[email protected]> * refactor code based on comment Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to non-negative Signed-off-by: Junwei Dai <[email protected]> * Add synchronous execution to reprovision Signed-off-by: Junwei Dai <[email protected]> * remove unsued common value Signed-off-by: Junwei Dai <[email protected]> * add reprovision sync execution Signed-off-by: Junwei Dai <[email protected]> * fix test for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * fix test name for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * addressed some comments Signed-off-by: Junwei Dai <[email protected]> --------- Signed-off-by: Junwei Dai <[email protected]> Co-authored-by: Junwei Dai <[email protected]>
…ing(#990) (#1009) Add synchronous execution option to workflow provisioning (#990) * Add synchronous execution option to workflow provisioning * code refactor * add change log * refactor code based on comment * fix spotless check * Limit workflow timeout to a range of 1 to 300 seconds * Limit workflow timeout to a range of 1 to 300 seconds * Limit workflow timeout to non-negative * Add synchronous execution to reprovision * remove unsued common value * add reprovision sync execution * fix test for WorkflowTimeoutUtilityTests * fix test name for WorkflowTimeoutUtilityTests * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message * fix spotless check * addressed some comments --------- Signed-off-by: Junwei Dai <[email protected]> Co-authored-by: Junwei Dai <[email protected]>
…-project#990) * Add synchronous execution option to workflow provisioning Signed-off-by: Junwei Dai <[email protected]> * code refactor Signed-off-by: Junwei Dai <[email protected]> * add change log Signed-off-by: Junwei Dai <[email protected]> * refactor code based on comment Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to a range of 1 to 300 seconds Signed-off-by: Junwei Dai <[email protected]> * Limit workflow timeout to non-negative Signed-off-by: Junwei Dai <[email protected]> * Add synchronous execution to reprovision Signed-off-by: Junwei Dai <[email protected]> * remove unsued common value Signed-off-by: Junwei Dai <[email protected]> * add reprovision sync execution Signed-off-by: Junwei Dai <[email protected]> * fix test for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * fix test name for WorkflowTimeoutUtilityTests Signed-off-by: Junwei Dai <[email protected]> * Add comments to explain AtomicBoolean usage in WorkflowTimeoutUtility, update error message Signed-off-by: Junwei Dai <[email protected]> * fix spotless check Signed-off-by: Junwei Dai <[email protected]> * addressed some comments Signed-off-by: Junwei Dai <[email protected]> --------- Signed-off-by: Junwei Dai <[email protected]> Co-authored-by: Junwei Dai <[email protected]> Signed-off-by: Junwei Dai <[email protected]>
Jan 14 Revision
Added synchronous execution option to reprovision
Description
This PR introduces a new
wait_for_completion_timeout
feature to the Provision Workflow API in the OpenSearch Flow Framework. The feature allows users to control whether the API call waits for the entire workflow provisioning process to complete before returning a response.What’s Changed:
Success Response:
TimeOut Response:
Areas of Concern:
I have a few parts of the implementation that I believe can be further improved, particularly in ProvisionWorkflowTransportAction. Some of the logic feels a bit verbose and might not be the most efficient way to handle the timeout and synchronous execution. I’d appreciate the feedback from reviewers.
Related Issues
Resolves #967
Check List
--signoff
.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.